package pl.edu.pk.psb.bc.assembler;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import pl.edu.pk.psb.bc.ds.UzytkownikDs;
import pl.edu.pk.psb.bc.dto.UzytkownikDto;
import pl.edu.pk.psb.bc.util.Plec;
import pl.edu.pk.psb.bc.util.TypUzytkownika;

@Component
public class UzytkownikAssembler {

	@Autowired
	AdresAssembler adresAssembler;

	@Autowired
	RezerwacjaAssembler rezerwacjaAssembler;

	public UzytkownikDto konwertuj(UzytkownikDs ds) {
		if (ds == null) {
			return null;
		}
		UzytkownikDto dto = new UzytkownikDto();
		dto.setId(ds.getId());
		dto.setImie(ds.getImie());
		dto.setNazwisko(ds.getNazwisko());
		dto.setLogin(ds.getLogin());
		dto.setHaslo(ds.getHaslo());
		dto.setTyp(TypUzytkownika.pobierzZeStringu(ds.getTyp()));
		dto.setDataRejestracji(ds.getDataRejestracji());
		dto.setTelefon(ds.getTelefon());
		dto.setAdres(adresAssembler.konwertuj(ds.getAdres()));
		dto.setPlec(Plec.pobierzZeStringu(ds.getPlec()));
		dto.setRezerwacje(rezerwacjaAssembler.konwertujDoDto(ds.getRezerwacje()));
		return dto;
	}

	public UzytkownikDs konwertuj(UzytkownikDto dto) {
		UzytkownikDs ds = new UzytkownikDs();
		ds.setId(dto.getId());
		ds.setImie(dto.getImie());
		ds.setNazwisko(dto.getNazwisko());
		ds.setLogin(dto.getLogin());
		ds.setHaslo(dto.getHaslo());
		ds.setTyp(dto.getTyp().getTyp());
		ds.setDataRejestracji(dto.getDataRejestracji());
		ds.setTelefon(dto.getTelefon());
		ds.setAdres(adresAssembler.konwertuj(dto.getAdres()));
		ds.setPlec(dto.getPlec().getPlec());
		ds.setRezerwacje(rezerwacjaAssembler.konwertujDoDs(dto.getRezerwacje()));
		return ds;
	}

	public List<UzytkownikDto> konwertujDoDto(List<UzytkownikDs> uzytkownicyDs) {
		List<UzytkownikDto> uzytkownicyDto = new ArrayList<UzytkownikDto>();
		for (UzytkownikDs u : uzytkownicyDs) {
			uzytkownicyDto.add(konwertuj(u));
		}
		return uzytkownicyDto;

	}
}
